
//
//  MGBS_TabBar.h
//  ZhiCuo
//
//  Created by apple on 16/1/14.
//  Copyright © 2016年 MJBS.TonYuBao. All rights reserved.
//
#import "MGBS_TabBar.h"
#import "MGBS_TabBarButton.h"
#import "UIView+Frame.h"
#import "AppDelegate.h"
#import "AwesomeMenu.h"
#import "AwesomeMenuItem.h"
@interface MGBS_TabBar ()<AwesomeMenuDelegate>

@property(nonatomic,strong)MGBS_TabBarButton *currentBtn;
/**
 定义一个可变数组，来设置每个btn 的tag值
  */
@property(nonatomic,strong)NSMutableArray *BtnTag;

@property (nonatomic, strong) AwesomeMenuItem *item0;
@property (nonatomic, strong) AwesomeMenuItem *item1;
@property (nonatomic, strong) AwesomeMenuItem *item2;
@property (nonatomic, strong) AwesomeMenuItem *item3;

@property (nonatomic, strong) UIView          *bottomCoverView;
@end

@implementation MGBS_TabBar
//懒加载
-(NSMutableArray *)BtnTag{
    if (!_BtnTag) {
        _BtnTag=[NSMutableArray arrayWithCapacity:4];
    }
    return _BtnTag;
}
//单利自己
+ (instancetype)sharedMGBS_TabBar {
    static MGBS_TabBar *sharedMGBS_TabBar = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        sharedMGBS_TabBar = [[MGBS_TabBar alloc] init];
    });
    return sharedMGBS_TabBar;

}
- (void)hidenSelf {
    self.hidden = YES;
    
    
}
- (void)showSelf {
    self.hidden = NO;
}


-(instancetype)init{
    if (self=[super init]) {
        //设置背景颜色
        self.backgroundColor=[UIColor whiteColor];
        
        //添加选项卡+
        self.userInteractionEnabled = YES;
        [self addPlusBtn];
    }
    return self;
}

-(void)addtabbarItem:(UITabBarItem *)item{
    
//创建选项卡，每一个都是butn，可以定义一个button类
    MGBS_TabBarButton *itemBtn=[[MGBS_TabBarButton alloc]init];//会调用init方法从写
    /**
    //设置每一个按钮的属性
    [itemBtn setTitle:item.title forState:UIControlStateNormal];
    [itemBtn setImage:item.image forState:UIControlStateNormal];
    [itemBtn setImage:item.selectedImage forState:UIControlStateSelected];
    放在自定义的button里面
    */
    
    itemBtn.item=item;//set方法
    
    //UIbutton 的选中状态默认是NO；这里需要我们设置一些属性
    //添加itemBtn的监听事件
    [itemBtn addTarget:self action:@selector(ClickBtnItem:) forControlEvents:UIControlEventTouchUpInside];
    
    //添加到当前的View中
    [self insertSubview:itemBtn belowSubview:self.plusBtn];
    
    itemBtn.tag=self.BtnTag.count;//0
    //每一次创建Controller的时候，就会有一个item，
    
    [self.BtnTag addObject:itemBtn];//第二次为 1，2，3，4
    //有数组判断，来默认选中第一个按钮
    if (self.BtnTag.count==1)
    {
        [self ClickBtnItem:itemBtn];
    }
    NSLog(@"count = %tu", self.subviews.count);

    
//    //设置默认选中的按钮，// 默认情况下subviews.count等于0, 只要添加了一个按钮那么就代表肯定是第一个
//    if (self.subviews.count==1) {
//        [self ClickBtnItem:itemBtn];
//    }
    //添加数组后，出现bug，不能选中第一个，原因是self.subviews.count的值第一次就是2，修改1--为2，可解决。
//    
}

-(void)ClickBtnItem:(MGBS_TabBarButton *)btn{
    
//取消上一次的选中
    self.currentBtn.selected=NO;//默认是NO；
    //选中当前的按钮
    btn.selected=YES;
    
    //记录当前选中的按钮
    self.currentBtn=btn;
    
    //切换控制器，通知 tabbarController
    if ([self.delegate respondsToSelector:@selector(tabBar:selectBtnFrom:to:)]) {
        [self.delegate tabBar:self selectBtnFrom:self.currentBtn.tag to:btn.tag];
    }
    
    
}
#pragma mark --这里很重要
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
    if (self.isHidden == NO) {
        //将当前tabbar的触摸点转换坐标系，转换到发布按钮的身上，生成一个新的点
        CGPoint newP = [self convertPoint:point toView:self.plusBtn];
        
        //判断如果这个新的点是在发布按钮身上，那么处理点击事件最合适的view就是发布按钮
        if ( [self.plusBtn pointInside:newP withEvent:event]) {
            
            CGPoint tempPoint = [self.plusBtn convertPoint:newP fromView:self.plusBtn];
            
            if (CGRectContainsPoint(self.plusBtn.bounds, tempPoint)) {
                return self.plusBtn;
            }
            
            for (AwesomeMenuItem *item in (UIButton *)self.plusBtn) {
                tempPoint = [item convertPoint:newP fromView:self.plusBtn];
                if (CGRectContainsPoint(item.bounds, tempPoint)) {
                    return item;
                }
            }
            
            return self.plusBtn;
        }else{//如果点不在发布按钮身上，直接让系统处理就可以了
            return [super hitTest:point withEvent:event];
        }
    }
    else {//tabbar隐藏了，那么说明已经push到其他的页面了，这个时候还是让系统去判断最合适的view处理就好了
        return [super hitTest:point withEvent:event];
    }
}

-(void)addPlusBtn{
    //3. 创建菜单按钮
    CityButton *plusBtn = [CityButton buttonWithType:UIButtonTypeCustom];
    [plusBtn setImage:[UIImage imageNamed:@"tab bar_icon_work-box"] forState:UIControlStateNormal];
    [plusBtn setImage:[UIImage imageNamed:@"tab bar_icon_work-box_pre"] forState:UIControlStateSelected];
    [plusBtn setTitle:@"工具箱" forState:0];
    [plusBtn setTitleColor:[UIColor lightGrayColor] forState:0];
    [plusBtn setTitleColor:[UIColor colorWithRed:78/255.f green:183/255.f blue:186/255.f alpha:1] forState:(UIControlStateHighlighted)];
    [plusBtn addTarget:self action:@selector(midBtnClicked)
      forControlEvents:UIControlEventTouchUpInside];
    [self addSubview:plusBtn];
    self.plusBtn = plusBtn;

}

/**
 *中间按钮点击事件
 */
- (void)midBtnClicked
{
    if (self.delegate && [self.delegate respondsToSelector:@selector(centerBtnClicked)]) {
        [self.delegate centerBtnClicked];
    }
}

/**
 这里设置itemBtn的大小,在父控件类修改子控件ItenmBtn 的大小
 */
-(void)layoutSubviews{
    [super layoutSubviews];
    
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        NSInteger index=0;
        for (UIButton *child in self.subviews) {
            
            if (child.tag==100) {
                continue;
            }
            //设置大小---每一个View
            // 2.计算每个按钮的frame
            CGFloat childW = self.frame.size.width / 5;
            CGFloat childH = self.frame.size.height;
            CGFloat childX = index * childW;
            CGFloat childY = 2;
            
            // 判断是否是中间一个按钮
            if (index == 2) {
                index++;
                childX = index * childW;//这里，没有设置其数据
            }
            index++;
            child.frame = CGRectMake(childX, childY, childW, childH);
        }
        
        //设置pluBtn的位子和大小
        self.plusBtn.centerX=self.width*0.5 + 10;
        self.plusBtn.centerY= -self.height*0.5;
        self.plusBtn.width = SCREEN_WIDTH / 5 - 20;
        self.plusBtn.height = self.height* 2;
        
        [self.plusBtn setImageRect:CGRectMake((self.plusBtn.width - 64 )/ 2, 10, 64, 64)];
        
        [self.plusBtn setTitleRect:CGRectMake(0, self.plusBtn.frame.size.height/1.25, self.plusBtn.frame.size.width, 20)];
        self.plusBtn.titleLabel.textAlignment = NSTextAlignmentCenter;
        self.plusBtn.titleLabel.font = [UIFont systemFontOfSize:12.f];
    });
}



@end
